/**
 * @file easy_led_port.c
 * @author 不咸不要钱 (main_2018@163.com)
 * @brief  led驱动移植接口文件
 * @version 0.1
 * @date 2021-11-24
 * 
 * @copyright Copyright (c) 2019
 * 
 */
#include "easy_led.h"

#include "stm32f1xx_hal.h"

/* 使用freertos  利用互斥信号量进行线程保护 */
//#define USE_FREERTOS

#if defined(USE_FREERTOS)
#include "FreeRTOS.h"
#include "semphr.h"
static SemaphoreHandle_t s_ledSemaphoreHandle;
#endif

/*!
  * @brief    led 接口文件初始化
  *
  * @param    
  *
  * @return   无
  *
  * @note     
  *
  * @see      
  */
void eled_port_init(void)
{
    #if defined(USE_FREERTOS)
        s_ledSemaphoreHandle = xSemaphoreCreateBinary();
        xSemaphoreGive(s_ledSemaphoreHandle);
    #endif
}

/*!
  * @brief    led 加锁
  *
  * @param    
  *
  * @return   无
  *
  * @note     
  *
  * @see      
  */
void eled_port_lock(void)
{
    #if defined(USE_FREERTOS)
        xSemaphoreTake(s_ledSemaphoreHandle, portMAX_DELAY);
    #else
        __set_PRIMASK(1);    /* 禁止全局中断 */
    #endif
}

/*!
  * @brief    led 开锁
  *
  * @param    无
  *
  * @return   无
  *
  * @note     
  *
  * @see      
  */
void eled_port_unlock(void)
{
    #if defined(USE_FREERTOS)
        xSemaphoreGive(s_ledSemaphoreHandle);
    #else
        __set_PRIMASK(0);    /* 使能全局中断 */
    #endif
}
